// pages/jiaofei/wuye/wuye.js
// pages/jiaofei/shenghuojiaofei/shuifei/shuifei.js

const request = require('../../../utils/request'); // 引入封装好的请求工具
const userApi = require('../../../utils/user'); // 引入用户API工具
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 是否接收账单短信
    receiveSms: false,
    
    // 用户地址信息（静态数据，实际应从API获取）
    userAddress: '城市花园1栋1单元13层1305',
    
    // 物业费信息（静态数据，实际应从API获取）
    feeInfo: {
      title: '物业管理费',
      amount: '360.00',
      description: '2020年度全部待缴（元）',
      paidMonths: 0,
      totalMonths: 12,
      billPerson: 'XX',
      status: '已结清'
    },
     // 用户信息对象，用于存储登录用户的所有数据
     userInfo: {
      nickName: '', // 用户昵称
      userName: '', // 用户姓名
      phonenumber: '', // 手机号
      avatar: '', // 头像
      balance: '0.00', // 账户余额
      userId:''
    },
    resident:{},
    // 社区名称
    communityName: 'XXXX智慧社区',
    //定义一个用户当前地址
    residentAddress:''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 页面加载时获取物业费数据
    this.getPropertyFeeData();
    
    // 获取用户信息（包括住户信息）
    this.getUserInfo();

    // 注意：不需要在这里直接调用getResident
    // getUserInfo函数会在必要时自动调用getResident
  },

  /**
   * 获取物业费数据
   * 实际开发中应该调用API获取数据
   */
  getPropertyFeeData() {
    // 模拟API调用
    // wx.request({
    //   url: 'https://api.example.com/property/fee',
    //   method: 'GET',
    //   data: {
    //     userId: wx.getStorageSync('userId'),
    //     addressId: wx.getStorageSync('selectedAddressId')
    //   },
    //   success: (res) => {
    //     if (res.data.code === 0) {
    //       this.setData({
    //         userAddress: res.data.data.address,
    //         feeInfo: res.data.data.feeInfo,
    //         communityName: res.data.data.communityName
    //       });
    //     } else {
    //       wx.showToast({
    //         title: res.data.msg || '获取数据失败',
    //         icon: 'none'
    //       });
    //     }
    //   },
    //   fail: () => {
    //     wx.showToast({
    //       title: '网络错误，请稍后重试',
    //       icon: 'none'
    //     });
    //   }
    // });
  },

  /**
   * 返回上一页
   */
  onBackClick() {
    wx.navigateBack({
      delta: 1,
      fail: function() {
        // 如果返回失败（没有上一页），则跳转到首页
        wx.switchTab({
          url: '/pages/index/index'
        });
      }
    });
  },

  /**
   * 跳转到缴费记录页面
   */
  goToPaymentRecord() {
    wx.navigateTo({
      url: '/pages/jiaofei/jiaofeijilu/jiaofeijilu'
    });
  },

  /**
   * 查看费用明细
   */
  viewFeeDetail() {
    wx.navigateTo({
      url: '/pages/jiaofei/wuye/detail/detail'
    });
  },

  /**
   * 去缴纳物业费
   */
  goToPayment() {
    // 检查是否有待缴费用
    if (this.data.feeInfo.status === '已结清') {
      wx.showToast({
        title: '当前无待缴费用',
        icon: 'none'
      });
      return;
    }
    
    wx.navigateTo({
      url: '/pages/jiaofei/wuye/payment/payment'
    });
  },
/**
 * 获取住户信息
 * 该函数通过调用后端接口获取指定userId的住户详细信息
 * 接口路径: /userId/{userId}
 * 请求方式: GET
 * 参数说明: userId - 用户ID，从this.data.userInfo中获取
 * 返回数据: 住户详细信息对象
 * 数据处理: 将返回的住户信息保存到this.data.resident中，用于页面显示
 */
getResident: function() {
  // 获取当前用户ID
  const userId = this.data.userInfo.userId;
  
  // 判断userId是否存在
  if (!userId) {
    console.error('用户ID不存在，无法获取住户信息');
    return;
  }
  
  // 显示加载提示
  wx.showLoading({
    title: '加载住户信息',
  });
  
  // 使用封装好的request工具发起请求
  // 注意：这里使用request而不是wx.request，以便统一处理请求头和错误
  request.get(`/userId/${userId}`)
    .then(response => {
      // 请求成功后隐藏加载提示
      wx.hideLoading();
      
      console.log('获取住户信息成功:', response);
      
      // 判断接口返回状态码
      if (response.code === 200) {
        const residentData = response.data;
        
        // 将接口返回的数据保存到页面的resident数据中
        this.setData({
          resident: residentData
        });
        
        // 处理获取到的住户信息
        if (residentData) {
          // 更新页面上的地址、社区名称等信息
          this.setData({
            userAddress: residentData.address || this.data.userAddress,
            communityName: residentData.communityName || this.data.communityName
          });
          
          // 更新本地存储中的userInfo，添加resident信息
          try {
            const localUserInfo = wx.getStorageSync('userInfo') || {};
            localUserInfo.resident = residentData;
            wx.setStorageSync('userInfo', localUserInfo);
            console.log('已将住户信息保存到本地存储:', residentData);
          } catch (error) {
            console.error('保存住户信息到本地存储失败:', error);
          }
        }
      } else {
        // 处理业务逻辑错误
        console.warn('获取住户信息失败:', response.msg);
        wx.showToast({
          title: response.msg || '获取住户信息失败',
          icon: 'none'
        });
      }
    })
    .catch(error => {
      // 处理网络错误或其他异常
      wx.hideLoading();
      console.error('获取住户信息异常:', error);
      wx.showToast({
        title: '网络异常，请稍后重试',
        icon: 'none'
      });
    });
},
  /**
   * 切换是否接收账单短信
   */
  toggleSmsOption(e) {
    const receiveSms = e.detail.value;
    this.setData({ receiveSms });
    
    // 实际开发中应该调用API保存用户设置
    // wx.request({
    //   url: 'https:localhost:8080/property/resident,+{1}',
    //   method: 'POST',
    //   data: {
    //     userId: wx.getStorageSync('userId'),
    //     receiveSms: receiveSms
    //   },
    //   success: (res) => {
    //     if (res.data.code !== 0) {
    //       wx.showToast({
    //         title: res.data.msg || '设置失败',
    //         icon: 'none'
    //       });
    //     }
    //   }
    // });
  },


  /**
   * 获取用户信息
   * 该函数从本地存储获取用户信息，包括用户基本信息和住户信息
   * 如果本地没有用户信息，则设置默认值并尝试从API获取
   */
  getUserInfo: function() {
    // 显示加载提示
    wx.showLoading({
      title: '加载中',
    });
    
    try {
      // 1. 首先尝试从本地存储获取用户信息
      const localUserInfo = wx.getStorageSync('userInfo');
      
      console.log('尝试获取本地用户信息');
      
      if (localUserInfo && Object.keys(localUserInfo).length > 0) {
        // 如果本地有缓存的用户信息，直接使用
        console.log('从本地缓存获取用户信息:', localUserInfo);
        
        // 获取本地存储的resident信息
        const localResident = localUserInfo.resident || {};
        
        // 更新页面数据，包括用户信息和住户信息
        this.setData({
          userInfo: localUserInfo,
          userName: localUserInfo.nickName || localUserInfo.userName || '用户',
          phone: localUserInfo.phonenumber || '未绑定手机号',
          balance: localUserInfo.balance || '0.00',
          userId: localUserInfo.userId,
          // 设置住户信息
          resident: localResident,
          // 如果住户信息中有地址和社区名称，则更新这些字段
          userAddress: localResident.address || this.data.userAddress,
          communityName: localResident.communityName || this.data.communityName,
         
          //{{resident.communityName}}{{resident.buildingName}}{{resident.unitName}}{{resident.floor}}{{resident.doorNumber}}
        });
        
        console.log('已从本地获取住户信息:', localResident);
        wx.hideLoading();
        
        // 如果没有住户信息，尝试获取
        if (!localResident || Object.keys(localResident).length === 0) {
          console.log('本地没有住户信息，尝试获取');
          this.getResident();
        }
        
        return;
      } else {
        console.log('本地没有用户信息或用户信息为空');
        
        // 设置默认用户信息
        const defaultUserInfo = {
          nickName: '默认用户',
          userName: 'XX',
          phonenumber: '13800138000',
          avatar: '',
          balance: '0.00',
          userId: '1', // 添加默认userId
          resident: {} // 添加空的resident对象
        };
        
        // 存储默认用户信息到本地
        wx.setStorageSync('userInfo', defaultUserInfo);
        
        // 更新页面数据
        this.setData({
          userInfo: defaultUserInfo,
          userName: defaultUserInfo.nickName,
          phone: defaultUserInfo.phonenumber,
          balance: defaultUserInfo.balance,
          userId: defaultUserInfo.userId,
          resident: {}
        });
        
        wx.hideLoading();
        
        // 如果API准备好了，可以尝试从API获取
        this.getUserInfoFromApi();
      }
    } catch (error) {
      console.error('获取用户信息出错:', error);
      wx.hideLoading();
      wx.showToast({
        title: '获取用户信息失败',
        icon: 'none'
      });
    }
  },

  /**
   * 从API获取用户信息
   */
  getUserInfoFromApi: function() {
    // 确保userApi已正确引入
    if (!userApi || !userApi.getUserProfile) {
      console.error('userApi未正确引入或getUserProfile方法不存在');
      return;
    }
    
    wx.showLoading({
      title: '更新用户信息',
    });
    
    // 调用API获取用户个人信息
    userApi.getUserProfile()
      .then(res => {
        wx.hideLoading();
        if (res.code === 200) {
          // 获取成功，更新用户数据
          const userData = res.data || {};
          
          // 更新本地存储
          wx.setStorageSync('userInfo', userData);
          
          // 更新页面数据
          this.setData({
            userInfo: userData,
            userName: userData.nickName || userData.userName || '用户',
            phone: userData.phonenumber || '未绑定手机号',
            balance: userData.balance || '0.00',
            userId: userData.userId || '1'
          });
          
          console.log('从API获取用户信息成功:', userData);
        } else {
          console.warn('API返回错误:', res);
        }
      })
      .catch(error => {
        wx.hideLoading();
        console.error('API调用失败:', error);
      });
  },

  /**
   * 去缴纳水费
   */
  goToWaterPayment() {
    wx.navigateTo({
      url: '/pages/jiaofei/shenghuojiaofei/shuifei/shuifei'
    });
  },

  /**
   * 去缴纳电费
   */
  goToElectricPayment() {
    // 存储住户信息到本地
    wx.setStorageSync('resident', this.data.resident);
    wx.navigateTo({
      url: '/pages/jiaofei/shenghuojiaofei/dianfei/dianfei'
    });
  },
//跳转到缴费记录页面
// goToPayment(){
//   wx.navigateTo({
//     url: '/pages/jiaofei/jiaofeijilu/jiaofeijilu'
//   });
// },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 每次页面显示时获取最新的用户信息
    this.getUserInfo();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})